import java.util.Scanner;

public class Demo11 {
	/**
	 * 内存可见性引起死锁，因为每次循环很快啥也不干，编译器就会帮助我们进行优化
	 * 将内存中isQuit拿到cpu寄存器上，也就是工作内存上，外面进行改变他的值的时候，并不知道修改了，还是会继续进行循环
	 *加上关键字volatile之后就会得到改善
	 */
	volatile private static int isQuit=0;
	public static void main(String[] args) throws InterruptedException {
		Thread t1=new Thread(()->{
			while(isQuit==0) {
//				try {
//					//加上睡眠就不会进行访问的次数过多或者是过快
//					Thread.sleep(1000);
//				} catch (InterruptedException e) {
//					throw new RuntimeException(e);
//				}
			}
		});
		t1.start();
		Thread t2=new Thread(()->{
			Scanner scanner=new Scanner(System.in);
			System.out.println("请输入数字");
			isQuit=scanner.nextInt();
			try {
				t1.join();
			} catch (InterruptedException e) {
				throw new RuntimeException(e);
			}
			System.out.println("线程1结束");
		});
		t2.start();
	}
}
